BigData_Project

小组成员:

11911808 刘仁杰 Task 1、2、3

11811815 逯济辰 Task 2、4、5

Background introduction

犯罪是现代人类社会普遍存在的社会问题。它与经济、文化、政治、技术和人们的幸福有很大关系。

本次数据分析所采用的数据集有:

我们将从这三个数据集中发现数据的内在特征,数据之间的相关性,找到数据的未来发展趋势,最终得到可靠的数据预测模型。

Task 1 DC Cluster Geo Information

在这次的数据分析中,我们为了满足数据可视化的需要,在给定数据集之外找到了DC特区cluster地理信息数据集,格式为geojson,具体来源自Open Data DC

Task 2 Data Exploration

数据初识

初步查看数据特征,数据分布,缺失值,数值型特征和非数值型特征。

2.1 数据预处理--缺失值、离群值、重复值

crime数据集

2.1.0 异常数据发现与处理

在数据分析过程中,我们发现了字段为“END_DATE”中有两组异常数据如下

可以很明显的发现,原数据集中的“END_DATE”字段有两组明显异常的数据,经过原始数据文档的定位分析,2102年应为2012年,2110年应为2011年,这里直接在原数据文档中进行手动修改。

2.1.1 数据分布情况总览

利用msno包可视化原始数据的数据缺失值分布信息

2.1.2 缺失值处理

经过初步的缺失值检测可以得出如下结论:

crime数据集里的BID字段数据缺失值较多,该特征已经不太具备说明度,可以删去,剩下的其他缺失值占总体比例较小,可以直接删去。

housing数据集中有很多列缺失值数据超过一半,对于缺失值超过一半的数据,可以选择删除字段,而对于缺失值没超过一半的数据,视情况处理。

至此,crime数据集缺失值处理完毕。

2.1.3 crime数据集数据转换--非数值型转换为数值型

可以看出对于非数值型特征,需要采取不同的方式进行数值化转换,例如:

“NEIGHBORHOOD_CLUSTER”--映射有序特征

“offensegroup”--独热码

“END_DATE”--日期去掉年(已经有),转化成月日小时

“offense-text”--稀疏矩阵

“SHIFT”--独热码

“offensekey”--重复,丢弃

“sector”--去掉D转化成数字

“BLOCK_GROUP”--提取数字字符转化为数字

“VOTING_PRECINCT”--去除precinct转化为数字

“BLOCK”--

“START_DATE”--日期去掉年(已经有),转化成年月日小时

"OFFENSE"--与offensegroup重复,丢弃

“OCTO_RECORD_ID”--去掉-转化为数字

“ANC”--将字母转成对应的数字,例如5E-55

"REPORT_DAT"--犯罪时间的上报时间具有较强的主观因素,不太具备参考性

"METHOD"--独热码

“location”--经纬度信息

housing 数据集

2.1.1 缺失值、非数值映射、数据填充、离群值

2.1.2 housing数据集归一化处理

2.2 数据探索

这部分将探索数据之间的相互关系

Crime数据集

首先我们可以利用seaborn画出crime数据集两两变量之间的关系。

两两特征之间,有些散乱分布,则视为它们基本无关,还有一些基本呈正比例线性关系,则两个特征很可能存在某种因果关系或者重复性。

接下来我们对关系较为明显的特征做更进一步分析。

从图中可以看出:

这两个变量之间基本呈一次正比例线性关系,数据存在重复性,我们这里可以将“CENSUS_TRACT”特征删去。

同理,我们发现['XBLOCK', 'longitude']和['YBLOCK', 'latitude']均为重复数据组,这里删去特征“XBLOCK”和“YBLOCK”

2.2.1 数据分布探索

从上图可以看出:

由上图可以总结出:

由上图可以总结出:

Housing数据集

housing数据集数据分布探索总结:

2.2.2 数据相关性探索

crime数据集

从上图可以看出:

由上图可以看出:

上述三张图分别选取了六种犯罪类型在一天中三个不同时间段的频率占比,依据犯罪发生时间的变化。

从图中可以看出:

从季度聚合可以看出:

从月份聚合可以看出:

housing数据集

绘制相关性矩阵热力图

2.3 犯罪事件与时空信息探索

由此可以得知cluster没有缺失值。

这里导入了DC_Neighborhood_cluster地理信息数据集,利用folium包初始化地理信息图像。

这张动态图像将DC区域由Neighborhood_Cluster划分成46个子行政区域,每一个区域的颜色的深浅代表了当前区域犯罪频率的高低。鼠标挪动到区域上方即可查看该区域发生犯罪事件的频数。

其中可以发现:

Task 3 Crime Data Spatial and Temperal Clustering/Classification

在这一节中,我们关注犯罪信息的原始时空分布,对其进行聚类和分类,了解数据的原始面貌,得到真实数据与理想情况的差别。

3.1 kmeans聚类

3.1.1数据集标准化处理

3.1.2 距离模型

利用 sklearn.cluster 中的 KMeans() 方法来构建聚类模型

上图显示了k-means针对犯罪地理经纬度信息进行聚类后的效果,根据分布点的空间分布密集程度,采用minkowski距离函数进行判别,将所有数据点分为46类,分别对应46个cluster,从地理分布的角度来看,模型聚类效果较好。

3.2 KNN分类

3.2.1 利用PCA进行数据降维

3.2.2 划分训练集和测试集

3.2.3 模型训练

3.2.4 模型评估

3.2.5 模型性能提升

对于K近邻算法,K的不同取值选取会影响模型的效果。此外,不同的数据标准化方法也会对模型效果产生影响。 本节我们将分别探索K取值的改变和数据标准化方法的改变是否能够提升模型的预测结果。

测试不同k取值对模型效果的影响

我们将分别测试 k = 1,5,9,11,15,21,27 时模型的效果。由于模型整体预测准确率很低。 我们通过观察正确率(Accuracy)来对比不同k取值下模型的效果。

可见,模型整体正确率较低,随着k值递减,当k=1时模型正确率最高,但仅仅是在测试集上的结果,对于真实的数据选取k=1往往会因模型过拟合导致效果较差。所以这里k=5可以作为性能调优之后的分类模型,但分类效果仍然较差,后续将采用集成模型进行分类并测试集成模型的分类效果。

3.3 Random Forest 分类

可以看到,随机森林分类算法效果提升显著,在选取超参数为10个分类器,特征选择算法为gini不纯度的情况下:

接下来我们调整n_estimators参数来做随机森林模型性能的调优,这里将n_estimators从1迭代到20,计算每一次的auc和召回率并可视化。

这里可以看出,在n_estimator从1一直迭代到20的过程中:

模型总体分类效果较好。

Task 4 Housing Price

4.1地形图展示不同cluster房价均值

根据 房价地理分布 结合 犯罪分布 可以看出:

4.2 预测房价趋势

4.2.1 霍尔特(Holt)线性趋势法预测未来房价(按月为单位)

4.2.2 霍尔特季节性预测模型预测未来房价(按月为单位)

下面我们探究一下出售房价随月份和季度的变化关系

上图显示出:

房价预测总结:

4.3 房价回归模型

4.3.1 载入评价指标

4.3.2 决策树回归

决策树回归中:

4.3.3 随机森林回归

4.3.4 模型评价指标

随机森林回归中:

回归模型评价总结:

Task 5 Extra Data Analysis -- Crime Prediction

上图展示了犯罪数据按月聚合后的数据分布。

5.1 crime发生频率时序预测

霍尔特季节性预测模型预测犯罪率

犯罪预测模型分析:

Conclusion

在本次针对DC犯罪和经济数据分析中:

我们首先对数据的类型、字段,进行分布探索,找到了数据集的缺失值、异常值、离群值,并做了相应的数据预处理,对于不同特征的非数值型字段也进行了数值型映射,采用了不同的字符串编码方式,如热卡、哑变量等。

然后我们通过对数据分布的简单探索,得出了一些经验性的总结,比如犯罪类型和房价的时空分布特征,并对不同字段的相关性做了分析,提出了相关性明显的多于字段,降低模型复杂度,在对数据的可视化过程中使用到了热力图、直方图、折线图等多种展现形式。

在我们对犯罪的时空信息进行聚类和分类的过程中:

在对于房价的预测模型中:

在对于未来犯罪数量的预测模型中: